// 可以通过在 webpack 配置中配置 entry 属性，来指定一个入口起点（或多个入口起点）。默认值为 ./src。
// 接下来我们看一个 entry 配置的最简单例子：

// output 属性告诉 webpack 在哪里输出它所创建的 bundles，以及如何命名这些文件，默认值为./ dist。基本上，
// 整个应用程序结构，都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段，来配置这些处理过程：

const path = require('path')


const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); // 用于访问内置插件

module.exports = {
  entry: './path/to/my/entry/file.js', // 入口文件 入口(entry)


  // 出口   1.出口路径 2.文件名称 输出(output)
  output: {
    path: path.resolve(_dirname, 'dist'),
    fileName: 'my-first-webpack.bundle.js'
  },

  module: {
    rules: [{ test: /\.txt$/, use: 'raw-loader' }],
  },

  plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })],

  mode: 'production',

}

// 输出(output)
// 在上面的示例中，我们通过 output.filename 和 output.path 属性，来告诉 webpack bundle 的名称，
// 以及我们想要 bundle 生成(emit)到哪里。可能你想要了解在代码最上面导入的 path 模块是什么，它是一个 Node.js 核心模块，用于操作文件路径。

// loader
// 以上配置中，对一个单独的 module 对象定义了 rules 属性，里面包含两个必须属性：test 和 use。这告诉 webpack 编译器(compiler) 如下信息：
// “嘿，webpack 编译器，当你碰到「在 require()/import 语句中被解析为 '.txt' 的路径」时，在你对它打包之前，先 use(使用) raw-loader 转换一下。”

// Warning
// 重要的是要记住，在 webpack 配置中定义 rules 时，要定义在 module.rules 而不是 rules 中。为了使你便于理解，如果没有按照正确方式去做，webpack 会给出警告。

// Warning
// 请记住，使用正则表达式匹配文件时，你不要为它添加引号。也就是说，/\.txt$/ 与 '/\.txt$/' 或 "/\.txt$/" 不一样。前者指示 webpack 匹配任何以 .txt 结尾的文件，
// 后者指示 webpack 匹配具有绝对路径 '.txt' 的单个文件; 这可能不符合你的意图。

// 插件(plugin)
// 在上面的示例中，html-webpack-plugin 为应用程序生成一个 HTML 文件，并自动将生成的所有 bundle 注入到此文件中。


// 模式(mode)
// 通过选择 development, production 或 none 之中的一个，来设置 mode 参数，你可以启用 webpack 内置在相应环境下的优化。其默认值为 production。